package br.urca.impl;

import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.transaction.Transactional;

import br.urca.dao.BiAssuntosMateriaisDAO;
import br.urca.model.BiAssuntosMateriais;
import br.urca.model.BiAssuntosMateriaisPK;

@Transactional
public class JPABiAssuntosMateriaisDAO implements BiAssuntosMateriaisDAO {
	
	private EntityManager manager;
	
	public JPABiAssuntosMateriaisDAO() {
		this(null);
	}
	
	@Inject
	public JPABiAssuntosMateriaisDAO(EntityManager manager) {
		this.manager = manager;
	}
	
	@Override
	public BiAssuntosMateriais getPorId(BiAssuntosMateriaisPK id) {
		return this.manager
				.createQuery(
						"SELECT b FROM BiAssuntosMateriais b where b.id = :id",
						BiAssuntosMateriais.class).setParameter("id", id)
				.getSingleResult();
	}

	@Override
	public List<BiAssuntosMateriais> getPorAssuntos(List<Short> codigosAssuntos) {
		return this.manager
				.createQuery(
						"SELECT b FROM BiAssuntosMateriais b where b.id.codAssunto in (:assuntos)",
						BiAssuntosMateriais.class)
				.setParameter("assuntos", codigosAssuntos).getResultList();
	}

}
